package Five;

import java.util.ArrayList;
interface GeneralStack<T> {
	T push(T e);            
	T pop();                 
	T peek();                
	boolean empty();
	int size();     
}
public class ArrayListGeneralStack<T> implements GeneralStack<T> {

	public ArrayList<T> list;
	public ArrayListGeneralStack() {
		list = new ArrayList<T>();
	}
	public T push(T item) {
		if (item == null) {
			return null;
		} else {
			list.add(item);
			return item;
		}
	}
	@Override
	public String toString() {
		return list.toString();
	}
	public T pop() {
		if(list.isEmpty()){
			return null;
		}
		T i=list.get(list.size()-1);
		list.remove(list.size()-1);
		return i;
	}

	public T peek() {
		if(list.isEmpty()){
			return null;
		}
		return list.get(list.size()-1);
	}

	@Override
	public boolean empty() {
		if (list.isEmpty())
			return true;
		else
			return false;
	}

	@Override
	public int size() {
		return list.size();
	}

}
